#from numpy import *
#import matplotlib.pyplot as plot
#from matplotlib.figure import SubplotParams
import os, sys

class Sahel:
    '''
    Klasse Sahel zur Simulation des Sahelsyndroms
    '''
    
    def __init__(self, popDev, zunaRate, abnaRate, timeStep, timeRange):
        '''
        Methode zur Initialisierung der Attribute popDev, zunaRate, abnaRate,
        timeStep und timeRange zur Beschreibung der Bevoelkerungsentwicklung
        '''
        self.popDev = [popDev]
        self.zunaRate = zunaRate
        self.abnaRate = abnaRate
        self.timeStep = timeStep
        self.timeRange = timeRange
        print popDev, zunaRate, abnaRate, timeStep, timeRange
    '''
    def zuna(self, popDev):
        """
        Methode zur Berechnung der Anzahl der Geburten, abhaenging von der
        Geburtenrate
        """
        return popDev*self.zunaRate*self.timeStep        
    

    def abna(self, popDev):
        """
        Methode zur Berechnung der Anzahl der Todesfaelle, abhaengig von der
        Sterberate
        """
        return popDev*self.abnaRate*self.timeStep
    '''

    def ausgabe(self):
        '''
        Methode Ausgabe zur Ausgabe der Bevoelkerungsentwicklung zu jedem Zeitstand
        an die Konsole
        '''
        i = 0
        while i < self.timeRange/self.timeStep:
            print "Jahr = ", i*self.timeStep
            print "Stock =  ", self.popDev[i]
            print "Zunahme = ", self.zuna(self.popDev[i])
            print "Verlust = ", self.abna(self.popDev[i])
            print " "
            i = i+1
       
    def sahelSim(self):
        '''
        Methode zur Simulation der Bevoelkerungsentwicklung
        '''
        i = 0
        zuna = []
        abna = []
        while i < self.timeRange/self.timeStep:
            zuna.append(self.zuna(self.popDev[i]))
            abna.append(self.abna(self.popDev[i]))
            self.popDev.append(self.popDev[i] + zuna[i] - abna[i])
            i = i+1
        return self.popDev, zuna, abna


    def visualisierung(self, popDev):
        '''
        Methode visualisierung zur Visualisierung der zeitlichen Dynamik
        der Stock- und Flowvariablen der Klasse Population
        '''
        fig = plot.figure(subplotpars = SubplotParams(left=None,
        right = None, bottom=None, top=None, wspace = 0.4, hspace = 0.4))        
        ax1 = fig.add_subplot(211)
        data = self.popDev
        ax1.plot(self.popDev)
        plot.ylabel('Bevoelkerung')
        ax2 = fig.add_subplot(223)
        ax2.plot(self.populationSim()[1])
        plot.ylabel('Geburten')
        ax3 = fig.add_subplot(224)
        ax3.plot(self.populationSim()[2])
        plot.ylabel('Sterbefaelle')
        plot.show()


'''
Testlauf fuer dieses Skript mit eigenen Werten
'''
'''
myPop = Sahel(20, 0.2, 0.1, 1, 10)
myPopSim = myPop.sahelSim()
myPop.ausgabe()
'''



        
